%\documentclass[twoside]{article}
%\usepackage{epsfig,html,amsmath,amssymb,lscape,longtable,pstricks,cite,hyperref}
%\usepackage{graphics}
%\pagestyle{headings}
%\markboth{}{}
%\newcommand{\hytt}[1]{\texttt{\hyphenchar\font=\defaulthyphenchar #1}}

% !Mode:: "TeX:UTF-8"
\documentclass[twoside]{article}
\usepackage{epsfig,html,amsmath,longtable,cite,hyperref}
\usepackage{graphics}
\usepackage{subfigure}
\usepackage{indentfirst}
\usepackage{multicol}
\usepackage{listings}

\usepackage{xeCJK} % seperate the english and chinese

\setCJKmainfont[ItalicFont={AR PL UKai CN}]{AR PL UMing CN} %设置中文默认字体
%\XeTeXlinebreaklocale "zh"  % Auto linebreak for chinese
\XeTeXlinebreakskip = 0pt plus 1pt minus 0.1pt % Auto linebreak for chinese

\setlength{\parindent}{2em}

\begin{document}
	
	%\linebreak {4}
	
	%{\kaishu 楷体}
	%{\heiti 黑体}
	%{\fangsong 仿宋}
	
	\title{UESOFT Cloud\\系统软件产品设计规范书}
	\author{
	}
	\maketitle {}
	
	\begin{figure}[h]
		\centering
		%	\includegraphics[scale=0.6]{fullscreen.png}
		%\epsfig{file=processplant.jpg,width=12cm}
		%\caption{流程工厂\label{cover}}
	\end{figure}
	\thispagestyle{empty}%目录页不显示页码
	\newpage
	\setcounter{page}{1}%从下面开始编页码
	%\begin{multicols}{2}
	\numberwithin{equation}{subsection}
	
	
	\tableofcontents
	\newpage
	
	
	\section{前言} 
	\subsection{修订历史}
	
	作者	谢新明、张喆、董浩	审核人	李国斌
	
	完成时间	2018.11.22	审核时间	2018.11.23
	
	版本修订历史记录：
	编号	修订日期	修改内容描述和理由	修改作者	修改的页数
	
	作者	张喆	审核人	李国斌
	
	完成时间	2018.11.26	审核时间	2018.12.04
	
	编号	修订日期	修改内容描述和理由	修改作者	修改的页数
	
	1	2018.11.27		谢新明	
	
	2	2018.11.27		董浩	
	
	3	2018.11.27		李国斌	
	
	4	2018.12.04		李国斌	
	
	5	2018.12.07		所有人	
	
	本文将功能需求总结书(需求总结)和软件设计规范书(功能设计)合并在一起了。其中需求总结主要由谢新明完成，李国斌补充了一些内容。27章功能设计由张喆完成，其他人补充了一些内容。
	
	\part{云计算}
	\section{云计算}
	
	云计算（Cloud Computing）是基于互联网的相关服务的增加、使用和交互模式，通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。云是网络、互联网的一种比喻说法。过去在图中往往用云来表示电信网，后来也用来表示互联网和底层基础设施的抽象。因此，云计算甚至可以让你体验每秒10万亿次的运算能力，拥有这么强大的计算能力可以模拟核爆炸、预测气候变化和市场发展趋势。用户通过电脑、笔记本、手机等方式接入数据中心，按自己的需求进行运算。
	
	对云计算的定义有多种说法。对于到底什么是云计算，有许多解释。现阶段广为接受的是美国国家标准与技术研究院（NIST）定义：云计算是一种按使用量付费的模式，这种模式提供可用的、便捷的、按需的网络访问，进入可配置的计算资源共享池（资源包括网络，服务器，存储，应用软件，服务），这些资源能够被快速提供，只需投入很少的管理工作，或与服务供应商进行很少的交互。
	
	\subsection{云计算进化史}
	原创|发布：2018-03-11 21:23:16    更新：2018-03-11 21:23:16
	
	阅读 65308赞 1251
	
	链接：https://mp.weixin.qq.com/s/zKOLgB4iH3ddPAoOysMziQ?
	
	个人电脑或许会在不久的将来成为古董，提醒人们曾有过一个奇特的时代：所有人都被迫担任业余的电脑技术人员。
	
	在 19 世纪末期，如果你告诉那些自备发电设备的厂家以后可以不用自己发电，大型集中供电的公用电厂通过无所不在的电网就可以充分满足各种厂家的用电需求，人们一定会以为你在痴人说梦。然后到 20 世纪初，绝大多数公司就改用由公共电网发出的电来驱动自家的机器设备，与此同时，电力还开始走进那些置办不起发电设备或买不起小型中央电厂昂贵电力的百姓家，从而无意中为家用电器的勃兴提供了舞台。
	
	那些没有预计到公用电网出现的公司纷纷陷入了困境，这既包括那些靠生产小型发电设备发了大财的设备生产厂家，也包括一度靠小型中央电厂、区域电网和照明设备垄断市场的电力巨头爱迪生。
	
	大约从十年前开始，在电力领域发生过的故事又开始在 IT 领域上演。由单个公司生产和运营的私人计算机系统，被中央数据处理工厂通过互联网提供的云计算服务所代替，计算机应用正在变成一项公共事业。如此一来，越来越多的公司不再花大钱购买电脑和软件，而选择通过网络来进行信息处理和数据存储，一如当年厂家们放弃购买和维护自由发电设备。那些像 Google 和亚马逊等那样能够提供云计算服务的公司就像当年的公用电力公司一样，必然能占得先机，在一段时间内打败微软和甲骨文等那些沉迷于向私有计算机系统提供软硬件设备的供应商和服务商，直至后者能迎头赶上云计算革命。
	
	不仅仅是公司对于自身信息部门的观念发生了改变。近年来，人们长期以来持有的对电脑的观念也已经发生了巨大的转变，虽然大部分人在家里或上班时仍然依赖个人电脑（毕竟智能手机更多仍被视为休闲娱乐设备），但人们利用个人电脑的方式已与以往非常不同，我们不再依赖电脑硬盘中的数据和软件，而是更多利用公共互联网传来的数据和软件。人们的电脑正在变成这样一种终端，其力量和作用不是主要来自电脑里的内容，而是主要来自电脑连上的互联网——尤其是连入互联网的其他电脑。更极端一点的说法是，整个互联网和所有联网的电脑组成了一个巨大的电脑。
	
	其实早在互联网出现之前，人们就已意识到，从理论上讲，电脑运算的能力和电力一样，可以在大规模公用“电厂”中生产，并通过网络传输到各地。就运营而言，这种中央“发电机”会比分散的私人数据中心更有效率。1961 年，当电脑科学家刚刚开始思考如何让电脑对话时，网络互联领域专家约翰·麦卡锡就预言：“未来电脑运算有可能成为一项公共事业，就像电话系统已成为一项公共事业一样。”
	
	每当网络互联领域出现了新的发展，就会有一批人试图把电脑公用运算搞成一笔大生意。在大型机时代，就有公司在分时运算的基础上将中央电脑租给其他企业使用，使后者能通过电话线与中央电脑直接连接。在 1970 年代，一些像自动数据处理公司那样的企业，已开始在有偿基础上向社会提供某些例行的运算服务，比如工资数据处理。
	
	当蒂姆·伯纳斯-李在 1990 年创立万维网时，用一个巨大的公共在线数据存储器来取代一切私人的线上线下数据存储器似乎已近在咫尺，而一大批应用服务提供商，也冀望通过互联网向企业传输软件。
	
	然而这一切并没有迅速发生，最大的障碍出现在网线上：能够取代你硬盘中软件的复杂软件，要求拥有迅速转移大量数据的能力，这在传统低速的拨号上网时代是做不到的。运行复杂软件会使电话线的运载能力迅速超负荷，或对调制解调器造成损坏，个人电脑会因此停机。
	
	但即便如此，早期的互联网依然提供了云计算的雏形。万维网有着一系列强大的技术作为支撑，尤其是那些用于描述和传送数据的软件。这些技术使所有接入互联网的计算机都变成信息处理机，人们很容易就能与他人分享信息和软件编码，并从很多网站和数据库同时接收信息。人们不仅能在互联网上“阅读”，还能在互联网上“书写”，一如人们阅读自己个人硬盘上的内容并写入内容一样，万维网即将变成万维电脑。
	
	光纤电缆和光纤互联网的出现，解决了数据传输的瓶颈，网络空间的重要性终于压倒了电脑内存的重要性。光纤互联网对电脑应用所起的作用，恰如交流电系统对电所起的作用，它使设备所处的位置对用户不再重要。既然数据可以光速在互联网上传输，就能够为远方的用户提供电脑的全部运算能力。运行人们所用软件的服务器电脑可能位于身边的数据中心，也可能位于国家某处的数据中心。
	
	此外，光纤互联网还扮演了当年使不同发电设备并网发电的旋转变流器的作用，令根本不同的、互不兼容的电脑像一个单一的系统般一起工作。通过为数据传输和“翻译”提供通用媒介，光纤互联网刺激中央电脑运算工厂的形成，这种中央工厂可同时为几万或几百万客户服务。许多小公司已经使用在 Google 公司数据中心上运行的软件，来满足自己大部分的日常运算需求。
	
	不少新兴公司开始抢这块蛋糕：几乎每一个传统的需要安装在电脑上的商业软件，都有与之类似的服务在互联网上提供。其他公司则采取了一种不同的做法，它们不经销软件，反而把硬件本身当做一种服务出售，它们建立了大型数据中心，让客户通过联网直接加以利用，每位客户都可自由选择想要运行的软件以及想要存储的数据。更激进的公用运算服务则试图完全取代个人电脑：人们利用个人电脑所做的一切，从文件存储到运行软件，都可以通过电脑运算网络实现。
	
	除了光纤互联网强大的传输功能外，虚拟化技术能力的增强对公用运算的发展提供了不可或缺的助力。所谓虚拟化是指用软件来模拟硬件，而虚拟化能力的提高，离不开电脑芯片效能爆炸性增长，以前运行一台或两台虚拟电脑就会使主计算机电脑的速度大大减慢，但如今普通的微处理器已变得非常强大，可以同时运行许多台虚拟电脑。
	
	由于计算机系统的所有部件，从微处理器、存储驱动器，到联网设备（如路由器、防火墙和符合均衡器）都是以数字方式运行的，所以它们既可以被软件代替，也可以实现虚拟化。对于曾费力地将各种软硬件组装成商业应用系统的人来说，这一切听起来像是天方夜谭，但它正在迅速地变成现实。网络（即互联网）确实成了人们的电脑，过去装在电脑机箱里的各个单独部件——存储信息的硬盘、处理信息的微型芯片、操控信息的软件——现在已经可以分散在世界各地，通过互联网集成， 并供每一个人分享。
	
	随着云计算服务趋向成熟，每个人都能便捷地使用网上丰富的软件服务，利用无限制的在线存储，通过手机、电视等多种不同装置上网和分享数据，个人电脑或许会在不久的将来成为古董，提醒人们曾有过一个奇特的时代：所有人都被迫担任业余的电脑技术人员。
	
	而从长期来看，公司信息技术部门不可能有幸存的机会，一旦企业运算的大部分任务都移出了自由数据中心并进入“云”中，它就没有可以运算的任务，企业甚至是雇员个人将能直接控制信息的处理，而不必依靠一大批技术专家。他们必须另谋生路，一如当年那些负责运行和维系公司自备发电设施的工程师们。
\part{功能需求总结}
\section{迁移数据库}
目前AutoPDMS使用ACCESS数据库系统，将不能满足互联网应用需求，更不能满足云系统和物联网系统需求。因此需要迁移数据库系统：

第一步是迁移到MySQL或MariaDB系统，第二步是迁移到REDIS或其它NoSQL系统。
\subsection{迁移ACCESS数据库到MySQL数据库}
\subsubsection{用例：一次性迁移一个AutoPDMS项目}
点击UPGradeDB项目界面中上部按钮升级，一次性迁移一个AutoPDMS项目ACCESS格式数据库到MySQL格式数据库。
\subsubsection{用例：一次性迁移所有AutoPDMS项目}
点击UPGradeDB项目界面中上部按钮升级，一次性迁移所有AutoPDMS项目ACCESS格式数据库到MySQL格式数据库。
\subsubsection{用例：用户登录时一次性迁移该AutoPDMS项目}
用户登录时，一次性迁移该AutoPDMS项目ACCESS格式数据库到MySQL格式数据库。用户可以选择是否迁移。
\section{云设计}
迁移AutoPDMS项目ACCESS格式数据库到MySQL格式数据库以后，把MySQL格式数据库存储在阿里云或腾讯云服务器。用户可以选择是否登录云服务器进行云设计。
\subsection{用例：局域网内单机设计}
目前AutoPDMS软件已经广泛应用在这种场景。
\subsection{用例：局域网共享协同设计}
目前AutoPDMS软件不少用户应用在这种场景。它基于Windows系统共享文件协议共享ACCESS数据库文件实现。
\subsection{用例：局域网协同设计\label{localnetcodesign}}
目前AutoPDMS软件没有这种功能。它基于ODBC协议访问MySQL数据库实现。
\subsection{用例：互联网协同设计\label{internetclouddesign}}
目前AutoPDMS软件没有这种功能。它基于ODBC协议访问远程MySQL数据库实现。

这种场景实现了真正的云设计。如何保证云设计的网络访问速度？能否在遇到网络瓶颈时转换为本地设计，即实现github那样的分布式网络云设计？
\subsection{用例：分布式云设计\label{distributionclouddesign}}
目前AutoPDMS软件没有这种功能。有多种实现方案。
\subsubsection{用例：基于gitlab分布式云设计\label{Gitdistributionclouddesign}}
目前AutoPDMS软件没有这种功能。它结合\ref*{localnetcodesign}和\ref{internetclouddesign}两者功能，基于ODBC协议访问MySQL数据库和gitlab协议、git协议实现。
\section{登录方式}
登录对话框下部有QQ、微信、Facebook图标，点击它们可以登录云设计系统。
\subsection{用例：AutoPDMS传统登录方式}
\subsection{用例：微信登录方式}
\subsection{用例：QQ登录方式}
\subsection{用例：Facebook登录方式}

\section{即时通信}
登录进入云设计系统后，可以使用即时通信和云平台的设计人员以及优易软件公司用户群的用户或技术支持人员沟通。

\section{分享屏幕}
登录进入云设计系统后，可以建立团队协作群，召开视频会议，讨论方案，或与某个人沟通寻求技术支持。点击屏幕分享，加入该会议的人可以看到屏幕，类似QQ视频会议分享屏幕功能。

\section{审核方案}
登录进入云设计系统后，可以建立团队协作群，讨论和审核方案。点击审核方案，加入该会议的人可以看到自己计算机的AutoPDMS模型或节点随着操作者的点击改变。

要比较本功能与分享屏幕功能速度，选择反应速度快的方案。

\section{培训用户}
登录进入云设计系统后，可以建立团队协作群，培训用户。点击培训用户，加入该会议的人可以看到自己计算机的AutoPDMS模型或节点随着教师的点击改变。

\section{升级软件}
登录进入云设计系统后，系统检查是否有新发布版本。如果有，提示用户选择是否升级。如果用户选择是，则软件开始下载，完成后自动安装并重新启动软件。

\part{功能设计}
\section{迁移数据库}
迁移数据库有多种实现方案。基本方案是利用ADO访问ODBC驱动程序，把ACCESS数据库迁移到MySQL数据库。
\subsection{ODBC}
1991年11月，微软宣布了开放数据库连接ODBC，次年推出可用版本。

1992年2月，推出了ODBC SDK 2.0版。ODBC基于SAG的SQL CAE草案所规定的语法，共分为Core、Level 1、 Level 2三种定义，分别规范了22、16、13共51条命令，其中29条命令甚至超越了SAG CLI中原有的定义，功能强大而灵活。它还包括标准的错误代码集、标准的连接和登录DBMS方法、标准的数据类型表示等。

由于ODBC设计架构和实现的先进性，且没有同类的标准或产品与之竞争，它一枝独秀，推出后仅仅两三年就受到了众多厂家与用户的青睐，成为一种广为接受的标准。目前，已经有130多家独立厂商宣布了对ODBC的支持，常见的DBMS都提供了ODBC的驱动接口，这些厂商包括Oracle、Sybase、Informix、Ingres、IBM(DB/2)、DEC(RDB)、HP(ALLBASE/SQL)、Gupta、Borland(Paradox)等。目前，ODBC已经成为客户机/服务器系统中的一个重要支持技术。
\subsection{开源iODBC}
iODBC是一个开源的ODBC驱动程序管理器和SDK，可以在linux，freebsd，unix和MacOS X平台上开发独立于数据库的应用程序，代码在 https://github.com/openlink/iODBC/
\subsection{使用AutoPDMS域对象连接MySQL}
AutoPDMS已经模仿MSADO封装了一个UEADO，实现了持久层域对象，并连接了持久层域对象和AutoPDMS域对象。现在UEADO已经支持ACCESS，只需要增加支持MySQL或MariaDB或PostgreSQL或REDIS即可连接MySQL。
具体要增加的接口如下：
\subsubsection{SQLGetInstalledDrivers ODBC驱动程序列表}
使用SQLGetInstalledDrivers函数获取已经安装的ODBC驱动程序列表，根据返回的szDrivers字符串是否含有MySQL字符识别是否为MySQL ODBC驱动程序。

\#include "stdafx.h"

\#include <Windows.h>

\#include <ODBCINST.H> 

void GetSQLDriverList()\{	TCHAR szDrivers[4096];	memset(szDrivers, 0, sizeof(szDrivers));	

WORD wRet = 0;	

if(SQLGetInstalledDrivers(szDrivers, sizeof(szDrivers), \&wRet))	

\{		wprintf(\_T("Installed driver list:\textbackslash n"));		

LPTSTR pszDrv = szDrivers;		

while(*pszDrv)		

\{			wprintf(\_T("\%s\textbackslash n"), pszDrv); 			

pszDrv += \_tcslen(pszDrv) + 1;		

\}		wprintf(\_T("\textbackslash n"));      	

\}\} 
--------------------- 
作者：hellokandy 
来源：CSDN 
原文：https://blog.csdn.net/hellokandy/article/details/80884692 
版权声明：本文为博主原创文章，转载请附上博文链接！

\subsubsection{ODBC注册DSN}
BOOL SQLConfigDataSource(HWND hwndParent, UINT
fRequest,LPCSTR IpszDriver, LPCSTR IpszAttributes);

无论是用ODBC还是DAO、ADO类，在访问ODBC数据源以前，都必须先注册DSN。通过调用函数SQLConfigDataSource，可以实现自动注册DSN。详见 \cite{auragreen}。
\subsubsection{重构函数UPGrade}
重构函数CUpdatedbOprate::UPGrade(CString strSourcePath, CString strAimPath)以及调用的相关函数，使其支持源数据库和目标数据库连接可以使用不同的驱动程序连接。该函数代码在
h:\textbackslash vc\textbackslash AutoPDMS9.0\textbackslash 升级\textbackslash APUPGradeDB\textbackslash Src\textbackslash UpdatedbOprate.cpp
\subsection{迁移ACCESS数据库到MySQL数据库}
\subsubsection{功能设计：一次性迁移一个AutoPDMS项目}

\subsubsection{功能设计：一次性迁移所有AutoPDMS项目}

\subsubsection{功能设计：用户登录时一次性迁移该AutoPDMS项目}

\section{云设计}
迁移AutoPDMS项目ACCESS格式数据库到MySQL格式数据库以后，把MySQL格式数据库存储在阿里云或腾讯云服务器。用户可以选择是否登录云服务器进行云设计。
\subsection{功能设计：局域网内单机设计}
目前AutoPDMS软件已经广泛应用在这种场景。
\subsection{功能设计：局域网共享协同设计}
目前AutoPDMS软件不少用户应用在这种场景。它基于Windows系统共享文件协议共享ACCESS数据库文件实现。
\subsection{功能设计：局域网TCP/UDP协同设计\label{localnetcodesign}}
目前AutoPDMS软件没有这种功能。它基于ODBC协议访问MySQL数据库实现。这是我猜的，可能功能设计并非如此。
\subsection{功能设计：互联网协同设计\label{internetclouddesign}}
目前AutoPDMS软件没有这种功能。它基于ODBC协议访问远程MySQL数据库实现。

这种场景实现了真正的云设计。如何保证云设计的网络访问速度？能否在遇到网络瓶颈时转换为本地设计，即实现github那样的分布式网络云设计？
\subsection{功能设计：分布式云设计\label{distributionclouddesign}}
目前AutoPDMS软件没有这种功能。有多种实现方案。
\subsubsection{功能设计：基于gitlab分布式云设计\label{Gitdistributionclouddesign}}
目前AutoPDMS软件没有这种功能。它结合\ref*{localnetcodesign}和\ref{internetclouddesign}两者功能，基于ODBC协议访问MySQL数据库和gitlab协议、git协议实现。	
	\section{其他的需求}
	\section{有待解决的问题列表}
	\section{附录}
	无。
	
	\section{云系统功能评估表}
	
	
	\begin{thebibliography}{99}
		\bibitem{zhuyiwencyq} 朱,以文, and 蔡,元奇等. (译), \textit{abaqus从入门到精通}.,武汉大学建筑学院, 湖北,(2003).
		\bibitem{ligb} 李,国斌, and 等. (译), \textit{PDMS PROPCON 属性库参考手册11.6版中文版}.,长沙优易软件开发有限公司, 湖南,(2018).
		\bibitem{auragreen} auragreen,\textit{ODBC注册DSN},https://blog.csdn.net/auragreen/article/details/46620073, csdn,(2015).
		
		
	\end{thebibliography}
	
	%\end{multicols}
	
	
\end{document}